// 此vm参数为页面的实例，可以通过它引用vuex中的变量
module.exports = (vm) => {
	// 初始化请求配置
	uni.$u.http.setConfig((config) => {
		/* config 为默认全局配置*/
		// console.log(8899)
		// config.baseURL = 'https://26461uv599.oicp.vip'; /* 根域名 */
		// config.baseURL = 'http://' + uni.getStorageSync('serveUrl'); /* 根域名 */
		config.timeout = 60000
		config.custom = {
			auth: true
		}; /* 根域名 */
		return config
	})

	// 请求拦截
	uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作
		config.baseURL = 'http://' + uni.getStorageSync('serveUrl');
		// 初始化请求拦截器时，会执行此方法，此时data为undefined，赋予默认{}
		config.data = config.data || {}
		// 根据custom参数中配置的是否需要token，添加对应的请求头
		if (config?.custom?.auth) {
			// 可以在此通过vm引用vuex中的变量，具体值在vm.$store.state中
			// config.header.token = vm.$store.state.userInfo.token
			config.header.token = uni.getStorageSync('token')
		}
		return config
	}, config => { // 可使用async await 做异步操作
		return Promise.reject(config)
	})


	// 响应拦截
	uni.$u.http.interceptors.response.use((response) => {
		/* 对响应成功做点什么 可使用async await 做异步操作*/
		const data = response.data
		// 自定义参数
		const custom = response.config?.custom
		// if (response.statusCode !== 200 & response.statusCode !== 201) { 
		// 如果没有显式定义custom的toast参数为false的话，默认对报错进行toast弹出提示
		// if (custom.toast !== false) {
		// 	uni.$u.toast(data.msg)
		// }
		// if (response.statusCode == 202) {
		// 	// console.log('进入请求拦截')
		// 	// 针对api接口登录过期处理
		// 	if (response.data.msg) {
		// 		if (response.data.msg.slice(0, 5) == "20004") {
		// 			uni.showModal({
		// 				title: '提示',
		// 				content: '登录过期请重新登录',
		// 				showCancel:false,
		// 				success: function (res) {
		// 					if (res.confirm) {
		// 						console.log('用户点击确定');
		// 						uni.reLaunch({
		// 							url: '/pages/login/login'
		// 						});
		// 					} 
		// 				}
		// 			});
		// 			return Promise.reject()
		// 		}
		// 	}
		
		// }
		
		if (response.statusCode == 401) {
			uni.showModal({
				title: '提示',
				content: '登录过期请重新登录',
				showCancel:false,
				success: function (res) {
					if (res.confirm) {
						console.log('用户点击确定');
						uni.reLaunch({
							url: '/pages/login/login'
						});
					} 
				}
			});
			return Promise.reject()
		
		}
		
		// 如果需要catch返回，则进行reject
		if (custom?.catch) {
			return Promise.reject(data)
		} else {
			// 否则返回一个pending中的promise，请求不会进入catch中
			return response
		}
		// }

	}, (response) => {
		// 对响应错误做点什么 （statusCode !== 200）
		return Promise.reject(response)
	})
}